//package com.empire.module.system.controller.admin.auth;
//
//import com.alibaba.fastjson.JSONObject;
//import com.empire.module.system.controller.admin.auth.vo.AuthLoginReqVO;
//import com.empire.module.system.controller.admin.auth.vo.AuthLoginRespVO;
//import com.empire.module.system.controller.admin.pki.MockPkiVerifyApiClient;
//import com.empire.module.system.service.auth.AdminAuthService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//import javax.annotation.security.PermitAll;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Enumeration;
//import java.util.List;
//
//@Slf4j
//@Validated
//@RestController
//public class MockPkiValidatorController {
//
//    public static final String USERNAME_KEY = "Username";
//    public static final String USER_TOKEN_KEY = "RZZX-USERTOKEN";
//    public static final String APP_TOKEN_KEY = "USER-NAME";
//
//    @Resource
//    private AdminAuthService authService;
//
//    // 注入API调用工具类
//    @Resource
//    private MockPkiVerifyApiClient mockPkiVerifyApiClient;
//
//    @PermitAll
//    @RequestMapping(value = "/getCallbackUserName")
//    public String getCallbackUserName(HttpSession session) {
//        // 从Session中获取保存的头信息
//        return  (String) session.getAttribute(USERNAME_KEY);
//    }
//
//    /**
//     * pki登陆
//     *
//     * @param request 请求信息
//     */
//    @PermitAll
//    @RequestMapping(value = "/token")
//    public void token(HttpServletRequest request,
//                      HttpServletResponse response,
//                      HttpSession session) throws IOException {
//        // 打印所有请求头
//        Enumeration<String> headerNames = request.getHeaderNames();
//        while (headerNames.hasMoreElements()) {
//            String headerName = headerNames.nextElement();
//            String headerValue = request.getHeader(headerName);
//            System.err.println(headerName + ": " + headerValue);
//        }
//
//        String userToken = request.getHeader("RZZX-USERTOKEN");
//        String appToken = request.getHeader("RZZX-APPTOKEN");
//        System.err.println("userToken: " + userToken);
//        System.err.println("appToken: " + appToken);
//
//        // 2.1.1 用户令牌核验
//        MockPkiVerifyApiClient.TokenVerifyApiResponse result = mockPkiVerifyApiClient.callTokenVerifyApi(
//                appToken, userToken, userToken);
//        if ("0000".equals(result.getStatus_code())) {
//            System.out.println("令牌核验成功：" + result.getMessage());
//            // 执行成功逻辑（如允许用户操作）
//        } else {
//            System.out.println("令牌核验失败：" + result.getMessage());
//            // 执行失败逻辑（如拒绝操作、提示用户重新登录）
//        }
//
//        // 2.1.2 用户令牌信息获取
//        MockPkiVerifyApiClient.UserTokenInfoResponse userTokenInfo = mockPkiVerifyApiClient.getUserTokenInfo(
//                appToken, userToken, userToken);
//        if ("0000".equals(userTokenInfo.getStatus_code())) {
//            System.out.println("令牌信息成功：" + JSONObject.toJSONString(userTokenInfo.getResult()));
//            // 执行成功逻辑（如允许用户操作）
//        } else {
//            System.out.println("令牌获取失败：" + result.getMessage());
//            // 执行失败逻辑（如拒绝操作、提示用户重新登录）
//        }
//
//        // 2.1.6 用户信息查询
//        MockPkiVerifyApiClient.UserInfoQueryRequest queryRequest = new MockPkiVerifyApiClient.UserInfoQueryRequest();
//        queryRequest.setPId(userTokenInfo.getResult().getPid());
//        MockPkiVerifyApiClient.UserInfoQueryResponse userInfo = mockPkiVerifyApiClient.getUserInfo(
//                appToken, userToken, queryRequest);
//        if ("0000".equals(userInfo.getStatus_code())) {
//            System.out.println("用户信息查询成功：" + JSONObject.toJSONString(userInfo.getResult()));
//            // 执行成功逻辑（如允许用户操作）
//        } else {
//            System.out.println("用户信息查询失败：" + result.getMessage());
//            // 执行失败逻辑（如拒绝操作、提示用户重新登录）
//        }
//
//        MockPkiVerifyApiClient.UserInfoQueryResult userInfoResult = userInfo.getResult();
//        if (userInfoResult != null && userInfoResult.getRows() != null && !userInfoResult.getRows().isEmpty()) {
//            List<MockPkiVerifyApiClient.UserInfoRow> rows = userInfoResult.getRows();
//            MockPkiVerifyApiClient.UserInfoRow user = rows.getFirst();
//            AuthLoginReqVO reqVO = new AuthLoginReqVO();
//            reqVO.setUsername(user.getIdcard());
//            reqVO.setPassword("admin123");
//            log.info("用户登陆：username={}, password={}", user.getIdcard(), reqVO.getPassword());
//            AuthLoginRespVO login = authService.login(reqVO);
//            log.info("用户登陆：username={} 登陆成功！", user.getIdcard());
//
//            // 3. 重定向到前端 index.html（或返回 200，由前端跳转）
//            try {
//                String idCard = user.getIdcard(); // 从用户信息中获取身份证号
//                session.setAttribute(USERNAME_KEY, idCard);
//                // 重定向到登录页，并携带身份证号参数
//                response.sendRedirect("/AutoLogin");
//            } catch (IOException e) {
//                e.printStackTrace();
//                response.setStatus(500);
//            }
//        }
//    }
//}
